home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1994 August: Tool Chest / Dev.CD Aug 94.toast / Tool Chest / Networking & Communications / Network Watch (DMZ) v1.3 / dmz.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-06-16  |  15.4 KB  |  569 lines  |  [TEXT/MPS ]

  1. /*
  2.  *    dmz.h
  3.  *    
  4.  *    Modification History
  5.  *    5/27/94     rrk    Implemented support for PPC
  6.  *  2/1/94 by Peter Lovell, GE Information Services
  7.  *    for Think C 6.0
  8.  *    9/21/92  rrk    Implemented ATalk Trans Queue Handler
  9.  *    2/15/90    pvh    - first wrote this.  about freakin time...
  10.  *
  11.  */
  12.  
  13. #ifndef __DMZ__
  14. #define __DMZ__
  15.  
  16. #ifndef THINK_C
  17. #include    <Types.h>
  18. #include    <Quickdraw.h>
  19. #include    <ToolUtils.h>
  20. #include    <Fonts.h>
  21. #include    <Events.h>
  22. #include    <Windows.h>
  23. #include    <Dialogs.h>
  24. #include    <Menus.h>
  25. #include    <Desk.h>
  26. #include    <TextEdit.h>
  27. #include    <Scrap.h>
  28. #include    <SegLoad.h>
  29. #include    <OSEvents.h>
  30. #include    <Files.h>
  31. #include    <Devices.h>
  32. #include    <Memory.h>
  33. #include    <Lists.h>
  34. #include    <SysEqu.h>
  35. #include    <Script.h>
  36. #include    <Packages.h>
  37. #include    <OSUtils.h>
  38. #include    <CursorCtl.h>
  39. #include    <Traps.h>
  40. #include    <Resources.h>
  41. #include    <Errors.h>
  42. #include    <OSUtils.h>
  43. #endif
  44.  
  45. #include    <GestaltEqu.h>
  46. #include    <ConditionalMacros.h>
  47. #include    <MixedMode.h>
  48. #include    <AppleTalk.h>
  49.  
  50.     
  51.  /*     
  52.  *    Structure necessary for MultiFinder compatibility.  Our own layer's A5
  53.  *    must be saved so globals can be used by the _PLookupName completion routine.
  54.  */
  55. #if powerc
  56. #pragma options align=mac68k
  57. #endif
  58. typedef struct myMPPParamBlock {
  59.     long                 myA5;
  60.     MPPParamBlock         myMPP;    
  61. } myMPPParamBlock;
  62. #if powerc
  63. #pragma options align=reset
  64. #endif
  65.     
  66. /* 
  67.  *    This is the structure that defines the "look" of our lists.  It includes
  68.  *    the object name, type, net, node & socket
  69.  */
  70. #if powerc
  71. #pragma options align=mac68k
  72. #endif
  73. typedef struct myNetworkEntity {
  74.     char object[33];    
  75.     char type[33];    
  76.     char net[6];
  77.     char node[4];
  78.     char socket[4];
  79. } myNetworkEntity;
  80. #if powerc
  81. #pragma options align=reset
  82. #endif
  83.  
  84. /* 
  85.  *    A few char codes…
  86.  */
  87. #define kEnterKey    (char)3
  88. #define kReturnKey    (char)13
  89.  
  90. /* 
  91.   *    HiliteMode low memory global.  We clear a bit at this address for using HiliteRGB
  92.   *    when inverting in our LDEF & when selecting items.
  93.   */
  94. #define HiliteModePtr    0x938
  95.  
  96. /* 
  97.   *    Offsets of the structure.  Used for the quicksort().
  98.   */
  99. #define myNetworkEntityObject    0 
  100. #define myNetworkEntityType     33+myNetworkEntityObject
  101. #define myNetworkEntityNet         33+myNetworkEntityType
  102. #define myNetworkEntityNode        6+myNetworkEntityNet
  103. #define myNetworkEntitySocket     4+myNetworkEntityNode
  104.  
  105. /* 
  106.  *    Justification constants for our list views.
  107.  */
  108. #define leftJust     1
  109. #define rightJust     2
  110.  
  111.  /* 
  112.   *    various stuff needed for AppleTalk bridging 
  113.   */
  114. #define sysABridge             0x19
  115. #define ABusVars             0x000002D8
  116. #define kBridgeSocket         0x6
  117. #define systemNetwork         0x1A
  118.  
  119.  /* 
  120.   *    other defines 
  121.   */
  122. #define kMachineNameResourceID    -16096
  123. #define kFlagshipNameResourceID    -16413
  124. #define    ddpMaxData                586
  125. #define kNumBuffers                2
  126. #define kEchoSocket                4
  127. #define kEchoType                "\pEcho Socket"
  128. #define kLookupBufSize            30000L
  129.  
  130.  /* 
  131.   * defines to indicate a change of status in AppleTalk
  132.   */
  133. #define    ATalkStatusChanged    1
  134. #define    ATalkActivated        2
  135.  
  136. /* 
  137.  *    calls for pre-Phase2 AppleTalk 
  138.  *    (already defined in LSC)
  139.  */
  140. #ifndef _GetZoneList         
  141. #define _GetZoneList    8
  142. #endif
  143.  
  144. #ifndef _GetLocalZone         
  145. #define _GetLocalZone    7
  146. #endif
  147.  
  148. #define entryLengths     20                /*  33 standard entityData length */
  149.  
  150. #define suspendResumeEvt     15
  151.  
  152. /*
  153.  *    Resource ID constants.
  154.  */
  155.  
  156. /*
  157.  *    Resource ID constants for string list items.
  158.  */
  159. #define kZoneStrID        1
  160. #define kObjectStrID    2
  161. #define kTypeStrID        3
  162. #define kNetStrID        4
  163. #define kNodeStrID        5
  164. #define kSktStrID        6
  165.  
  166. #define    kStringListID     128                /* ID for our string list resource */
  167.  
  168.  
  169. #define    appleID            128             /* This is a resource ID */
  170. #define    fileID             129             /* ditto */
  171. #define    editID             130             /* ditto */
  172.  
  173. #define    appleMenu        0                /* MyMenus[] array indexes */
  174. #define    aboutMeCommand    1
  175.  
  176. #define    fileMenu        1
  177. #define    lookupCommand     1
  178. #define    quitCommand     2
  179.  
  180. #define    editMenu        2
  181. #define cutCommand        3
  182. #define copyCommand        4
  183. #define pasteCommand    5
  184. #define clearCommand    6
  185. /*#define clearCommand    5*/
  186.  
  187. /* for sort child menu */
  188. #define objectItem            1
  189. #define typeItem            2
  190. #define netItem                3
  191. #define nodeItem            4
  192. #define socketItem            5
  193.  
  194. /*
  195.  * For the About Sample... DLOG
  196.  */
  197. #define    aboutMeDLOG        128
  198. #define    okButton            1
  199. #define    authorItem            2            /* For SetIText */
  200. #define    languageItem        3            /* For SetIText */
  201.  
  202. /*
  203.  *    constants for main dialog 
  204.  */
  205. #define kMainDialogID    129
  206.  
  207. #define kZoneListID            1
  208. #define kNameTypeListID        2
  209. #define kZoneItemID            4
  210. #define kTypeID                5
  211. #define kObjectID            6
  212. #define kObjectCountID        7
  213. #define kProgressID            8
  214. #define kNetID                9
  215. #define kNodeID                10
  216. #define kSocketID            11
  217. #define kDoLookupID            12
  218.  
  219. /*
  220.  *    constants for lookup dialog 
  221.  */
  222. #define kLookupDialogID    130
  223. #define kIntervalItem     3
  224. #define kCountItem         4
  225. #define kPhase2Item     5
  226. #define kObjectItem     8
  227. #define kTypeItem         9
  228.  
  229. /*
  230.  *    constant for Alert dialog
  231.  */
  232. #define    rUserAlert        1000                /* user error alert */
  233.  
  234.  
  235. #define    resumeMask                1        /* bit of message field for resume vs. suspend */
  236. #define    sysEnvironsVersion        1
  237.  
  238. /* 
  239.  *    quicksort "mode" constants 
  240.  */
  241. #define sortOnZoneName     1
  242. #define sortOnObject     1
  243. #define sortOnType         31
  244. #define sortOnNet         62
  245. #define sortOnNode         68
  246. #define sortOnSocket     72
  247.     
  248. /* 
  249.  *    constants for window activation 
  250.  */
  251. #define kActivateWindow        1
  252. #define kDeactivateWindow    0
  253.  
  254. /* 
  255.  *    low memory global for hilite RGB setting 
  256.  */
  257. #define HiliteRGB 0xDA0
  258.  
  259.  
  260. #define zoneNameSize     33
  261.  
  262. /* 
  263.  * constants for the gATalkFlags global
  264.  */
  265.  
  266. #define    kVMActive            0
  267. #define kATQInstalled        1
  268. #define kSocketBuffsHeld    2
  269. #define kNameRegistered        3
  270. #define    kATalkActive        4
  271. #define    kSocketBuffsInitd    5
  272. #define kListenerHeld        6
  273.  
  274. /* 
  275.  *    AppleTalk Phase 2 calls 
  276.  */
  277.  
  278. /* 
  279.  *    csCodes for new .XPP driver calls
  280.  */
  281. #ifndef xCall
  282. #define    xCall                246
  283. #endif
  284.  
  285. /* 
  286.  *    xppSubCodes 
  287.  */
  288. #ifndef zipGetLocalZones
  289. #define zipGetLocalZones     5
  290. #endif
  291. #ifndef zipGetZoneList
  292. #define zipGetZoneList        6
  293. #endif
  294. #ifndef zipGetMyZone
  295. #define zipGetMyZone         7
  296. #endif
  297.  
  298. /* 
  299.  *    mpp csCodes 
  300.  */
  301. #ifndef getAppleTalkInfo
  302. #define getAppleTalkInfo     258
  303. #endif
  304.  
  305. /*  
  306.  *    offsets for packet buffers to be used by socket listener
  307.  */
  308. #if powerc
  309. #pragma options align=mac68k
  310. #endif
  311. typedef struct {
  312.         QElemPtr    qLink;
  313.         short        qType;
  314.         short        buffer_type;            /* DDP Type */
  315.         short        buffer_NodeID;            /* Destination Node */
  316.         AddrBlock    buffer_Address;            /* Source Address in AddrBlock format */
  317.         short        buffer_Hops;            /* Hop count */
  318.         short        buffer_ActCount;        /* length of DDP datagram */
  319.         OSErr        buffer_CheckSum;        /* Checksum returned here */
  320.         long        buffer_Ticks;            /* Timestamp of processing by socket listener */
  321.         char        buffer_Data[ddpMaxData]; /* the DDP datagram */
  322. } PacketBuffer;
  323.  
  324. typedef PacketBuffer *PacketPtr;
  325. #if powerc
  326. #pragma options align=reset
  327. #endif
  328.  
  329. /*
  330.  *    The following stuff is implemented for the AppleTalk Transition Queue 
  331.  */
  332.  
  333. #define ATTransOpen                    0        /* .MPP just opened */
  334. #define ATTransClose                2        /* .MPP is closing */
  335. #define ATTransClosePrep            3        /* OK for .MPP to close? */
  336. #define ATTransCancelClose            4        /* .MPP close was canceled */
  337. #define ATTransNetworkTransition    5        /* .MPP Network ADEV transition */
  338. #define ATTransNameChangeTellTask    6        /* Flagship name is changing */
  339. #define ATTransNameChangeAskTask    7        /* OK to change Flagship name */
  340. #define ATTransCancelNameChange        8        /* Flagship name change was canceled */
  341. #define ATTransCableChange            'rnge'    /* Cable Range Change has occurred */
  342. #define ATTransSpeedChange            'sped'    /* Change in processor speed has occurred */
  343.  
  344. /*----------------------------------------------------------------------
  345.         NBP Name Change Info record
  346. ----------------------------------------------------------------------*/
  347. #if powerc
  348. #pragma options align=mac68k
  349. #endif
  350. typedef struct NameChangeInfo {
  351.     Str32     newObjStr;    /* new NBP name */
  352.     Ptr    name;            /* Ptr to location to place a pointer to Pascal string of */
  353.                             /* name of process that NAK'd the event */
  354. }
  355.     NameChangeInfo, *NameChangePtr, **NameChangeHdl;
  356. #if powerc
  357. #pragma options align=reset
  358. #endif
  359.  
  360. /*----------------------------------------------------------------------
  361.         Network Transition Info Record
  362. ----------------------------------------------------------------------*/
  363.  
  364. #if powerc
  365. #pragma options align=mac68k
  366. #endif
  367. typedef struct TNetworkTransition {
  368.     Ptr        private;            /* pointer to private structure */
  369.     ProcPtr    netValidProc;        /* pointer to network validation procedure */
  370.     Boolean     newConnectivity;    /* true = new connection */
  371.                                      /* false = loss of connection */
  372.  
  373. }
  374.     TNetworkTransition , *TNetworkTransitionPtr, **TNetworkTransitionHdl;
  375. #if powerc
  376. #pragma options align=reset
  377. #endif
  378.  
  379.  
  380. typedef    pascal long    (*NetworkTransitionProcPtr)(TNetworkTransitionPtr netTrans, \
  381.                       unsigned long theNet);
  382.  
  383. /*----------------------------------------------------------------------
  384.         Cable Range Transition Info Record
  385. ----------------------------------------------------------------------*/
  386. #if powerc
  387. #pragma options align=mac68k
  388. #endif
  389. typedef struct TNewCRTrans {
  390.     short    newCableLo;    /* the new Cable Lo received from RTMP */
  391.     short    newCableHi;    /* the new Cable Hi received from RTMP */
  392. }
  393.     TNewCRTrans , *TNewCRTransPtr, **TNewCRTransHdl;
  394. #if powerc
  395. #pragma options align=reset
  396. #endif
  397.  
  398. /*----------------------------------------------------------------------
  399.         AppleTalk Transition Queue Element
  400. ----------------------------------------------------------------------*/
  401. #if powerc
  402. #pragma options align=mac68k
  403. #endif
  404. typedef struct    myATQEntry {
  405.     struct ATQEntry            *qLink;        /* have to maintain standard ATQ entries */
  406.     short                    qType;
  407.     ATalkTransitionEventUPP    CallAddr;        
  408.     Handle        globs;                    /* handle to user defined globals */
  409.     long        myA5;                    // A5 saved for the ATQ routine
  410. }
  411.     myATQEntry, *myATQEntryPtr, **myATQEntryHdl;
  412. #if powerc
  413. #pragma options align=reset
  414. #endif
  415.  
  416. /*----------------------------------------------------------------------
  417.          Transition Queue global values
  418. ----------------------------------------------------------------------*/
  419. #if powerc
  420. #pragma options align=mac68k
  421. #endif
  422. typedef struct    dmzEntry {
  423.     Boolean            atalkStatusChanged;    /* status of AppleTalk has changed */
  424.     Boolean            atalkActive;    /* AppleTalk is active/inactive */
  425.     NamesTableEntry    *dmzNTEPtr;        /* -> NTE entry to Remove name */
  426. }
  427.     dmzEntry, *dmzEntryPtr, **dmzEntryHdl;
  428. #if powerc
  429. #pragma options align=reset
  430. #endif
  431.  
  432. /*----------------------------------------------------------------------
  433.          ProcPtr defines for PowerPC
  434. ----------------------------------------------------------------------*/
  435. enum {
  436.     uppInitListenerProcInfo = kPascalStackBased
  437.          | RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
  438.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(QHdrPtr)))
  439.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(QHdrPtr)))
  440. };
  441.  
  442. typedef pascal OSErr (*InitSktListenerProcPtr)(QHdr *freeQ, QHdr *usedQ);
  443.  
  444. #if USESROUTINEDESCRIPTORS
  445. typedef UniversalProcPtr    InitSktListenerUPP;
  446.  
  447. #define CallInitSktListenerProc(userRoutine, freeQ, usedQ)    \
  448.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppInitListenerProcInfo, (freeQ), (usedQ))
  449. #define NewInitSktListenerProc(userRoutine)        \
  450.         (InitSktListenerUPP) NewRoutineDescriptor((ProcPtr)userRoutine, uppInitListenerProcInfo, kM68kISA)
  451.  
  452. #else
  453.  
  454. typedef InitSktListenerProcPtr    InitSktListenerUPP;
  455.  
  456. #define CallInitSktListenerProc(userRoutine, freeQ, usedQ)    \
  457.         (userRoutine)(freeQ, usedQ)
  458. #define NewInitSktListenerProc(userRoutine)        \
  459.         (InitSktListenerUPP)(userRoutine)
  460.  
  461.     // add definition for accessing A5 which is in LowMem.h that doesn't get included when we
  462.     // compile for 68K
  463. #define LMGetCurrentA5() (* (Ptr *) 0x0904)
  464. #endif
  465.  
  466. /* prototypes ************* */
  467.  
  468. /* dmz.a */
  469. extern void        MYVBLSPININSTALL(void);
  470. extern void        STOPANDREMOVESPINNINGCURSOR(void);
  471.  
  472. /* dmzmain.c */
  473. extern void        myVBLSpinInstall(void);
  474. extern int        stopAndDisposeSpinCursor(void);
  475. extern void        DrawBoldItem(WindowPtr whichWindow, short theItem, short whichStrID);
  476. extern pascal void    updateUserItems(WindowPtr whichWindow, short theItem);
  477. extern void        getandSetIt(short whichID);
  478. extern void        setupUserItems(void);
  479. extern void        setupLookupItem(void);
  480. extern void        doLookupItem(void);
  481. extern void        setWindowStdState(WindowPtr theWindow);
  482. extern void        setUpDialogs(void);
  483. extern void        FrameItem(DialogPtr whichDialog, short whichItem);
  484. extern void        doModeless(DialogPtr whichDialog, short whichItem);
  485. extern void        doIdle(void);
  486. extern void        DrawGrowBox(WindowPtr theWindow);
  487. extern void        doUpdate(WindowPtr theWindow);
  488. extern void        ShowMainWindowAndSizeIt(void);
  489. extern void        doInitializing(void);
  490. extern short    resizeRectToListCellSize(short height);
  491. extern void        resizeWindow(WindowPtr whichWindow, short height);
  492. extern Boolean    IsAppWindow(WindowPtr window);
  493. extern Boolean    IsDAWindow(WindowPtr window);
  494. extern Boolean    DoCloseWindow(WindowPtr window);
  495. extern void        DoZoomWindow(WindowPtr whichWindow, short partCode);
  496. extern void        DoGrowWindow(WindowPtr whichWindow, EventRecord *evt);
  497. extern void        doActivate(WindowPtr theWindow);
  498. extern void        doDeactivate(WindowPtr theWindow);
  499. extern void        doCleanUpAndTerminate(void);
  500. extern void        setupMenus(void);
  501. extern void        handleLookupDialogEdit(void);
  502. extern void        doCommand(long mResult);
  503. extern pascal void    aboutDialogOKFrame(WindowPtr theWindow, short itemNo);
  504. extern void        centerDialog(WindowPtr theWindow);
  505. extern void        showAboutMeDialog(void);
  506. extern void     BigBadError(Str255    message);
  507. extern Boolean  TrapAvailable(short theTrap);
  508. extern Boolean  IsVMOn(void);
  509.  
  510.  
  511. /* dmzlists.c */
  512.  
  513. extern void        invalidateItem(short whichItem);
  514. extern void        DisposOfMyLists(void);
  515. extern void        OpenZonesList(void);
  516. extern void        tellUserNoZones(void);
  517. extern int        myCompare(char *aStr, char *bStr);
  518. extern void        letsSort(Ptr theBuffPtr, short numZonesGot, short number);
  519. extern void        SetZoneCells(Ptr bufferPtr, short NumZonesGot);
  520. extern void        doZonesListStuff(void);
  521. extern void        OpenObjectTypeList(void);
  522. extern void        doObjectDoubleClick(void);
  523. extern void        doObjectTypeListStuff(void);
  524. extern void        padEntry(unsigned char *entry, short length, short just);
  525. extern void        SetObjectTypeCells(Ptr bufferPtr, short numDevicesGot);
  526. extern void     ClearZoneCells();
  527. extern void     ClearObjectTypesList();
  528.  
  529. /* dmzat.c */
  530. extern pascal void saveThatA5(void);
  531. extern pascal void restoreThatA5(void);
  532. extern void     saveThisA5(myATQEntry *atqEntry);
  533.  
  534. extern unsigned char    *Pstrcat(unsigned char *s, unsigned char *t);
  535. extern unsigned char    PStrLen(unsigned char *e);
  536. extern Boolean    PStrComp(unsigned char *str1, unsigned char *str2);
  537. extern void        killLookups(void);
  538. extern void        removeMyNameAndSocket(void);
  539. extern void        closeUpOurAppleTalk(void);
  540. extern void        registerMyName(void);
  541. extern void        enableSetSelfSend(void);
  542. extern void        phase2Check(void);
  543. extern void        InitAppleTalkVars(void);
  544. extern void        addToUnpackedBuffer(Ptr oldBuffer, Ptr newBuffer, short numGot, short total);
  545. extern void        getMyZone(char *myZoneBuffer);
  546. extern void     doGetZoneListPhs2(void);
  547. extern void        doGetZoneListPrePh2(void);
  548. extern Boolean    zonesPresent(void);
  549. extern void        setItemString(DialogPtr whichDialog, short whichItem, Str255 str);
  550. extern void        getTheZoneList(void);
  551. extern void        processListUpdate(void);
  552. extern void        myCompletionRoutine(ParamBlockRec *paramBlock);
  553. extern void        setUpdateListFlag(void);
  554. extern char        giveMeItemValue(short whichItem);
  555. extern void        giveMeItemString(short whichItem, Str255 str);
  556. extern void        getTypesNamesInZone(char *NBPZone);
  557. extern void        doGetMyZonePhs2(void);
  558. extern void        doGetLocalZonesPhs2(void);
  559. extern void        doGetZoneListPhs2(void);
  560. extern void        setupEchoDialog(DialogPtr echoDialog, myNetworkEntity *myEnt);
  561. extern void        doEcho(myNetworkEntity *myEnt);
  562. extern long        ATalkTransQueue(long selector, myATQEntry *q, void *p);
  563. extern OSErr     InitEchoBuffers(void);
  564. extern short    AppleTalkVersion(void);
  565. extern Boolean     GestaltAvailable(void);
  566. extern Boolean  LAPMgrExists(void);
  567.  
  568.  
  569. #endif     // __DMZ__